package com.guozinhs.auto.core;

import com.guozinhs.auto.data.AgData;

/**
 * 执行节点
 *
 * @Author: GuoZi
 * @Date: 2022/2/13 1:12
 */
public interface ExecState {

    /**
     * 是否开启平滑移动
     *
     * @return 开启状态
     */
    boolean isSmoothMove();

    /**
     * 获取平滑移动速率(像素/秒)
     *
     * @return 速率
     */
    int getSmoothMoveSpeed();

    /**
     * 是否开启随机移动
     *
     * @return 开启状态
     */
    boolean isRandomMove();

    /**
     * 随机范围的半径(像素)
     *
     * @return 半径
     */
    int getRandomMoveRadius();

    /**
     * 获取配置数据
     *
     * @return 配置数据
     */
    AgData getGlobalData();

    /**
     * 是否已终止
     *
     * @return 节点结果
     */
    boolean isShutdown();

    /**
     * 是否运行中
     *
     * @return 节点结果
     */
    boolean isRunning();

    /**
     * 是否暂停
     *
     * @return 节点结果
     */
    boolean isSuspended();

    /**
     * 开始运行
     *
     * @param stateNodeId 状态节点id
     */
    void run(Long stateNodeId);

    /**
     * 终止
     */
    void shutdown();

    /**
     * 暂停
     */
    void suspend();

    /**
     * 继续
     */
    void continued();

}
